// 1.0 开启端口为8083的服务器
const http = require('http');
const fs = require('fs');

let server = http.createServer((req, res) => {

    // 结构出url和method
    let { url, method } = req;
    if (url === '/add' && method === 'POST') {
        // 2.0 定义data和end事件
        let result = '';
        req.on('data', (chunk) => {
            result += chunk.toString();
        });

        req.on('end', () => {
            // result的结果表现形式：cname=安吉拉&skin_name=魔法厨娘
            // 3.1 将result解析成js对象 :{cname:'安吉拉',skin_name:'魔法厨娘'}
            let sparmas = new URLSearchParams(result);
            let cname = sparmas.get('cname');
            let skin_name = sparmas.get('skin_name');
            let heroObj = { cname, skin_name };

            // 3.2 将对象转成json数据保存到data.json中（fs.writeFileSync）
            // 3.2.1 考虑后面请求追加数据问题
            // 获取db/data.json中的数据内容转换成数组
            let dataList = fs.readFileSync('./db/data.json', 'utf-8');
            dataList = JSON.parse(dataList);// 结果：[]
            // 将heroObj 追加dataList数组中
            dataList.push(heroObj);  // [{cname:'安吉拉',skin_name:'魔法厨娘'}]

            // 将dataList转换成json字符串写入到db/data.json中
            fs.writeFileSync('./db/data.json', JSON.stringify(dataList), 'utf8');

            // let heroJSON = JSON.stringify(heroObj);
            // fs.writeFileSync('./db/data.json', heroJSON, 'utf8');

            // 4.0 响应结果给客户端
            res.end('ok-->OK');

            // console.log(result);
        })
    } else {
        // 404处理资源不能处理
        res.statusCode = 404;
        res.end('not found');
    }
})

server.listen(8083, () => {
    console.log('8083就绪-post接口');
})